里氏替换原则(LSP):面向对象设计中的一条核心原则,意思是在不影响程序正确性的前提下,任何使用基类(父类)对象的地方,都应该能够透明地用其子类对象替换。它强调子类必须遵守父类对外承诺的行为(契约),避免“继承后反而破坏原有逻辑”。
(它也常被视为 SOLID 五大原则中的 L。)
/ˈlɪskɔv/ /ˌsʌbstɪˈtuːʃən/ /ˈprɪnsəpəl/
The Liskov Substitution Principle helps me design safer inheritance. /lɪskɔv/ /sʌbstɪˈtuːʃən/ /ˈprɪnsəpəl/ 帮助我设计更安全的继承关系。
If a subclass changes expected behavior, it violates the Liskov Substitution Principle and can break existing code.
/ɪf/ /ə/ /ˈsʌbklæs/ /tʃeɪndʒɪz/ /ɪkˈspɛktɪd/ /bɪˈheɪvjər/, /ɪt/ /ˈvaɪəleɪts/ /ðə/ /ˈlɪskɔv/ /ˌsʌbstɪˈtuːʃən/ /ˈprɪnsəpəl/ /ænd/ /kæn/ /breɪk/ /ɪɡˈzɪstɪŋ/ /koʊd/。
如果子类改变了人们对其行为的预期,就违反了里氏替换原则,并可能破坏既有代码。
该术语以计算机科学家 Barbara Liskov(芭芭拉·里氏科夫) 命名。它最早与“数据抽象、子类型(subtyping)与行为规范”相关的研究密切相连;后来在面向对象设计中被归纳为“子类必须可替换父类”的设计原则,用来约束继承带来的行为兼容性问题。